package com.leinao.images.dao;

import com.leinao.images.dto.ImageInfo;
import com.leinao.images.dto.ImagesDto;
import com.leinao.images.dto.ImagesRelationDto;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 镜像Mapper
 *
 * @author  suqiliang
 * @date 2019年04月18日 下午2:29:54
 *
 */
@Repository
public interface ImagesMapper {

    /**
     * 根据编程语言和框架匹配镜像列表
     *
     * @param language 编程语言
     * @param framework 框架
     * @param userId 用户
     */
	List<ImagesDto> getImagesList(@Param(value = "language") String language,
                                  @Param(value = "framework") String framework,
                                  @Param(value = "userId") String userId);

    /**
     *
     * @Description: 创建自定义镜像
     * @param imagesDto : 自定义镜像
     * @return: int
     * @Author: 曹阳
     * @date: 2019/5/15 11:35
     *
     **/
    int createUserImage(ImagesDto imagesDto);

    /**
     *
     * @Description: 更新自定义镜像简介
     * @param imagesDto : 自定义镜像
     * @return: int
     * @Author: 曹阳
     * @date: 2019/5/15 11:35
     *
     **/
     int updateUserImage(ImagesDto imagesDto);

    /**
     *
     * @Description:  创建镜像关系信息
     * @param imagesRelationDto : 镜像关系信息
     * @return: int
     * @Author: 曹阳
     * @date: 2019/5/15 16:09
     *
     **/
    int createImagesRelation(ImagesRelationDto imagesRelationDto);

    /**
     *
     * @Description: 通过用户ID查询用户自定义镜像
     * @param userId : 用户ID
     * @return: java.util.List<com.leinao.images.dto.ImagesDto>
     * @Author: 曹阳
     * @date: 2019/5/15 16:26
     *
     **/
    List<ImageInfo> getUserImagesList(String userId);

    /**
     *
     * @Description: 通过镜像ID查询用户自定义镜像
     * @param id : 镜像ID
     * @param userId : 用户ID
     * @return: java.util.List<com.leinao.images.dto.ImagesDto>
     * @Author: 曹阳
     * @date: 2019/5/15 16:26
     *
     **/
    ImageInfo getUserImageById(@Param("id")Long id, @Param("userId")String userId);

    /**
     *
     * @Description: 通过状态查询镜像列表
     * @param status : 镜像状态
     * @return: java.util.List<com.leinao.images.dto.ImageInfo>
     * @Author: 曹阳
     * @date: 2019/5/17 9:09
     *
     **/
    List<ImagesDto> getUserImageByStatus(Integer status);

    /**
     *
     * @Description: 删除镜像
     * @param id : 镜像ID
     * @param userId : 用户ID
     * @return: void
     * @Author: 曹阳
     * @date: 2019/5/17 10:00
     *
     **/
    int deleteUserImage(@Param("id")Long id, @Param("userId")String userId);

    /**
     *
     * @Description:  获取用户上传镜像总数
     * @param userId :  用户ID
     * @return: int
     * @Author: 曹阳
     * @date: 2019/5/17 10:02
     *
     **/
    int getUserImageCount(String userId);
}